
package com.example.learningnote.giftbox;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import java.util.ArrayList;
import java.util.List;

/**
 * ViewModel 管理礼物数据和选中状态
 * 数据层（GiftViewModel
 * 使用 LiveData 提供数据的响应式更新
 * 数据变化（如切换礼物列表或选中礼物）通过 LiveData 触发。
 * 适配器接收数据更新，调用 notifyDataSetChanged() 刷新视图。
 */
public class GiftViewModel extends ViewModel {
    private final MutableLiveData<List<Gift>> giftList = new MutableLiveData<>(); // 礼物列表
    private final MutableLiveData<String> selectedGiftId = new MutableLiveData<>(); // 选中礼物的 ID

    /**
     * 初始化礼物列表（模拟服务端数据）
     */
    public void initGiftList(boolean useGiftList1) {
        List<Gift> gifts = new ArrayList<>();
        if (useGiftList1) {
            // giftList: 14 个礼物
            gifts.add(new Gift("id0", "小星星"));
            gifts.add(new Gift("id1", "甜筒"));
            gifts.add(new Gift("id2", "粉钻"));
            gifts.add(new Gift("id3", "捧在手心"));
            gifts.add(new Gift("id4", "白头偕老"));
            gifts.add(new Gift("id5", "太阳神"));
            gifts.add(new Gift("id6", "花车巡游"));
            gifts.add(new Gift("id7", "你好"));
            gifts.add(new Gift("id8", "惊喜咖啡"));
            gifts.add(new Gift("id9", "520气球"));
            gifts.add(new Gift("id10", "有才"));
            gifts.add(new Gift("id11", "魔法奇缘"));
            gifts.add(new Gift("id12", "四叶草"));
            gifts.add(new Gift("id13", "浪漫星星"));

        } else {
            // giftList: 3 个礼物
            gifts.add(new Gift("id0", "小星星"));
            gifts.add(new Gift("id1", "甜筒"));
            gifts.add(new Gift("id2", "粉钻"));
        }
        giftList.setValue(gifts);
    }

    /**
     * 获取礼物列表 LiveData
     */
    public LiveData<List<Gift>> getGiftList() {
        return giftList;
    }

    /**
     * 获取选中礼物 ID LiveData
     */
    public LiveData<String> getSelectedGiftId() {
        return selectedGiftId;
    }

    /**
     * 设置选中礼物
     * @param giftId 礼物 ID
     */
    public void selectGift(String giftId) {
        selectedGiftId.setValue(giftId);
    }
}

